The Internet of Things (IoT) is the network of physical objects and their virtual representations-devices, vehicles, buildings and other items embedded with electronics, software, sensors, and network connectivity which enable these objects to collect and exchange data. The IoT is networked via wireless radio frequency, optical cables, or twisted copper cables using protocols such as ZigBee® (an IEEE 802.15.4-based specification for a suite of high-level communication protocol), wireless technology, Bluetooth®, Ethernet, and Internet Protocol (IP). Examples of such connections are sensor devices connected to a networked device over Bluetooth®, smart lights connected to their control device over ZigBee® and network devices connected over IP.
While IoT technology solutions tend to be a single product or service, IoT technology solutions are increasingly becoming a combination of products and services as smart devices become increasingly connected. As IoT solutions move from being a single product or service solution to a solution that involve a combination of multiple IoT products and services, IoT applications are created to integrate the IoT products and services together. IoT applications generally are comprised of service logic and interaction logic. Service logic defines a specific function, the access to which is made available to others. Interaction logic defines how various services interact with each other.
The IoT technology industry has relied on creating solutions by developing IoT applications to stitch together various IoT devices and services. Previously, when the number of IoT products and services participating in a solution was manageable and the solution was mostly involved in a fixed set of IoT products and services, an IoT application was feasible. In that case, an IoT application can be built having both IoT service and interaction logic hard-coded.
However, due to the recent developments of IoT applications, the ability to create solutions is becoming an increasingly challenging effort. This is because a number of products and services participating in an IoT solution increases, and the set of products and services participating in the solution may no longer be fixed. As a result, IoT solution programmers need to expend energy and resources creating increasingly large interaction logic. Consequently, IoT applications tend to take longer to develop, have a higher cost, are more complex with increased dependency, and need higher skilled resources.
There has been great progress in improving device intelligence, connectivity, analytical services, and integration platforms. However, creating and deploying an IoT solution has been, and still is, a difficult process. It is a software integration and development exercise where engineers with specific skill sets are required to spend large amounts of effort. One of the main barriers for creating a solution is the complexity of interacting with many IoT devices and services. Even with the help of improved platforms and messaging services, most of the interaction relies on developers' coding skills and efforts.
Networking Industries grew rapidly when appliances such as bridges, switches, and routers allowed the industry to deploy networks by configuration rather than software development. Some change is needed in creating IoT technology solutions, where interactions are no longer coded by developers into an application, but instead configured into a product that abstracts out the interaction logic from applications. Solving such a challenge should not be executed through forms of heavy application when the IoT application is created with a large interaction stack. Rather the approach should be centered around creating a product that can configure and execute on interaction logic's basic elements.
It has been needed a solution to link two different entities directly together, followed by creating hubs to link many different entities, and finally moving towards infrastructure products. Infrastructure products have played an important role in massively scaling industries. Table1 shows examples of such infrastructure products including phone switches for PSTN (public switched telephone network), routers for Internetworking, and distribution centers for logistics. Infrastructure products have flourished in connectivity focused industries such as the ones mentioned above.
TABLE 1Point-Infra-InfraIndustryto-PointHubstructureBusinessDeliveryHandWarehouseDistributionUPS,DeliveryCenterFEDEXCommuni-MeetingPBXPSTNVerizon,cationAT&T,TwillioDataDirectSwitch,RouterAT&T,CableBridgeComcastIoTInterfacePlatform,To beTo beCodingMiddlewaredevelopeddeveloped
Therefore, for the reason that it is not a scalable solution trying to link every entity using a single point solution, an infrastructure solution is needed for solution development of linking different entities in an easy and flexible way rather than hard-coding to reduce the time and cost of developing IoT solution systems. Another problem is related to the cost of maintenance and re-development of IoT solution systems. Each time the application environmental conditions have changed, the IoT solution systems need to be adjusted or re-developed accordingly based on the environmental condition changes. Such adjustment or re-development may involve human effort and increases the cost for maintenance of IoT solution system for the applications having variable environmental conditions. Therefore, a self-modifying system, which can reconfigure the system at run time, is needed so that the IoT solution systems can be self-adaptive to the changes of the application environmental conditions without involvement of human developers and can reduce the cost related to maintenance and re-development of the IoT solution systems.